import { fileURLToPath, URL } from 'node:url'
import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import Components from 'unplugin-vue-components/vite'
import { VantResolver } from '@vant/auto-import-resolver'

// https://vitejs.dev/config/
export default defineConfig({
  base: './',
  plugins: [
    vue(),
    Components({
      resolvers: [VantResolver()]
    })
  ],
  resolve: {
    alias: {
      '@': fileURLToPath(new URL('./src', import.meta.url))
    }
  },
  // 自定义主题颜色
  css: {
    preprocessorOptions: {
      scss: {
        additionalData: `
        @use "@/styles/var.scss" as *;
        `
      }
    }
  },
  build: {
    outDir: './dist', // 指定输出目录为 "./dist"
    assetsDir: './assets', // 指定静态文件引入路径为 "./assets"
    sourcemap: false, // 不生成 sourceMap 文件
    minify: 'terser', // 使用 terser 进行代码压缩
    chunkSizeWarningLimit: 2000, // 设置 chunk 大小警告的限制为 2000 KiB
    chunkSizeLimit: 5000, // 设置 chunk 大小的限制为 5000 KiB
    emptyOutDir: true, // 在构建之前清空输出目录
    rollupOptions: {
      output: {
        // 在这里修改静态资源路径
        chunkFileNames: 'assets/js/[name]-[hash].js',
        entryFileNames: 'assets/js/[name]-[hash].js',
        assetFileNames: 'assets/[ext]/[name]-[hash].[ext]',
        manualChunks(id) {
          // Vue 及其相关库的 chunk
          // if (id.includes('vue') || id.includes('core-js') || id.includes('@babel/runtime')) {
          //   return 'vendor'
          // }
          // 其他库的 chunk
          if (id.includes('node_modules')) {
            return 'dependencies'
          }
          // 默认情况下将模块放入一个单独的 chunk
          return 'common'
        }
      }
    }
  }
})
